From 13a24b1b369c8bfad8f8827d0cb39fed9394d850 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Tue, 23 Oct 2001 16:07:05 +0000 Subject: [PATCH] scroll to cursor on grab focus, unless it's caused by button click, #59708 2001-10-23 Havoc Pennington * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor on grab focus, unless it's caused by button click, #59708 --- ChangeLog | 5 +++++ ChangeLog.pre-2-0 | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-2 | 5 +++++ ChangeLog.pre-2-4 | 5 +++++ ChangeLog.pre-2-6 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ gtk/gtktextview.c | 18 ++++++++++++++++++ gtk/gtktextview.h | 3 +++ 9 files changed, 56 insertions(+) diff --git a/ChangeLog b/ChangeLog index 11af575157..7f6cee8625 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-10-23 Havoc Pennington + + * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor + on grab focus, unless it's caused by button click, #59708 + Tue Oct 23 11:53:00 2001 Owen Taylor * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 11af575157..7f6cee8625 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +2001-10-23 Havoc Pennington + + * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor + on grab focus, unless it's caused by button click, #59708 + Tue Oct 23 11:53:00 2001 Owen Taylor * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 11af575157..7f6cee8625 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2001-10-23 Havoc Pennington + + * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor + on grab focus, unless it's caused by button click, #59708 + Tue Oct 23 11:53:00 2001 Owen Taylor * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 11af575157..7f6cee8625 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +2001-10-23 Havoc Pennington + + * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor + on grab focus, unless it's caused by button click, #59708 + Tue Oct 23 11:53:00 2001 Owen Taylor * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 11af575157..7f6cee8625 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +2001-10-23 Havoc Pennington + + * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor + on grab focus, unless it's caused by button click, #59708 + Tue Oct 23 11:53:00 2001 Owen Taylor * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 11af575157..7f6cee8625 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +2001-10-23 Havoc Pennington + + * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor + on grab focus, unless it's caused by button click, #59708 + Tue Oct 23 11:53:00 2001 Owen Taylor * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 11af575157..7f6cee8625 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +2001-10-23 Havoc Pennington + + * gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor + on grab focus, unless it's caused by button click, #59708 + Tue Oct 23 11:53:00 2001 Owen Taylor * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 5a5fa96ee5..968abde9f2 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -172,6 +172,7 @@ static gint gtk_text_view_motion_event (GtkWidget *widget, static gint gtk_text_view_expose_event (GtkWidget *widget, GdkEventExpose *expose); static void gtk_text_view_draw_focus (GtkWidget *widget); +static void gtk_text_view_grab_focus (GtkWidget *widget); /* Source side drag signals */ static void gtk_text_view_drag_begin (GtkWidget *widget, @@ -3272,7 +3273,9 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event) text_view = GTK_TEXT_VIEW (widget); + text_view->disable_scroll_on_focus = TRUE; gtk_widget_grab_focus (widget); + text_view->disable_scroll_on_focus = FALSE; if (event->window != text_view->text_window->bin_window) { @@ -3647,6 +3650,21 @@ gtk_text_view_draw_focus (GtkWidget *widget) } } +static void +gtk_text_view_grab_focus (GtkWidget *widget) +{ + GtkTextView *text_view; + + text_view = GTK_TEXT_VIEW (widget); + + GTK_WIDGET_CLASS (parent_class)->grab_focus (widget); + + if (!text_view->disable_scroll_on_focus) + gtk_text_view_scroll_mark_onscreen (text_view, + gtk_text_buffer_get_mark (get_buffer (text_view), + "insert")); +} + /* * Container */ diff --git a/gtk/gtktextview.h b/gtk/gtktextview.h index 430c53a9e4..e296c4621d 100644 --- a/gtk/gtktextview.h +++ b/gtk/gtktextview.h @@ -92,6 +92,9 @@ struct _GtkTextView guint need_im_reset : 1; /* If we have reset the IM since the last character entered */ /* just selected a word or line via double/triple click */ guint just_selected_element : 1; + + /* disable scrolling to cursor on focus */ + guint disable_scroll_on_focus : 1; /* debug flag - means that we've validated onscreen since the * last "invalidate" signal from the layout -- 2.30.2